package org.jeecg.modules.flow.sys.service;/*
 * 项目名称:    wms-server-jeecg
 * 接口描述:    //
 * 创建人员:    zhaojun
 * 创建时间:    2023-09-13
 */

import org.jeecg.modules.flow.record.entity.WmsFlowRecord;
import org.jeecg.modules.flow.sys.entity.dto.BaseFlowDto;
import org.jeecg.modules.flow.sys.entity.dto.WorkFlowInfoDto;

import java.util.List;

public interface WorkFlowService<T> {

    /**
     * 查询当前业务记录，所处流程节点信息
     *
     * @param workFlowInfoDto
     * @return
     */
    List<WmsFlowRecord> workFlowInfo(WorkFlowInfoDto workFlowInfoDto);

    /**
     * 当前业务操作，记录流程节点信息
     *
     * @param base
     */
    void commit(BaseFlowDto base);

    /**
     * 当前业务操作，记录流程节点信息
     *
     * @param base
     */
    void retry(BaseFlowDto base);

    /**
     * 中止流程
     *
     * @param base
     */
    void interrupt(BaseFlowDto base);

    /**
     * 流程回调失败，记录流程节点信息
     *
     * @param code   流程唯一吗
     * @param infoId 业务记录id
     */
    void callFail(String code, String infoId);

    /**
     * 查询当前业务记录的流程状态信息
     *
     * @param infoId
     * @return
     */
    List<WmsFlowRecord> currentBussienssRecords(String infoId);

    void createFlowRecord(BaseFlowDto base);

    /**
     * 草稿删除
     *
     * @param infoId
     */
    void delete(String infoId);

    /**
     * 后端自动流转下一个节点
     */
    BaseFlowDto backAutoCommit(String infoId, T data);

    /**
     * 暂停流程
     *
     * @param infoId
     */
    void pauseFlow(String infoId,String msg);
}
